/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.dominio.servicio.impl;

import com.thoughtworks.xstream.XStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.dao.IDAOVentaDeposito;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.dominio.common.ESTADO_RESULTADO;
import pe.com.cotelasa.scp.dominio.common.ResultadoServicio;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.dominio.service.IServicioVentaDeposito;
import pe.com.cotelasa.scp.entidad.VentaDeposito;

/**
 *
 * @author Jorge
 */
@SuppressWarnings("serial")
@Service
public class ServicioVentaDepositoImpl implements IServicioVentaDeposito, Serializable {

    @Inject
    private IDAOVentaDeposito daoVentaDeposito;

    @Override
    public ResultadoServicio guardarVentaDeposito(VentaDeposito ventaDeposito) throws ServiceException {
        ResultadoServicio resultadoServicio = new ResultadoServicio(ESTADO_RESULTADO.EXITOSO);
        try {
            ventaDeposito.setEstadoRegistro(ESTADO_REGISTRO.ACTIVO.getValor());
            
            daoVentaDeposito.insertar(ventaDeposito);
            resultadoServicio.setMensaje("Se guardo el documento satisfactoriamente.");
        } catch (DAOException ex) {
            resultadoServicio.setEstadoResultado(ESTADO_RESULTADO.FALLIDO);
            resultadoServicio.setMensaje("Ocurrio un problema al tratar de guardar el documento. Vuelva a intentar");
            throw new ServiceException(ex.getMessage(), ex);
        }
        return resultadoServicio;
    }

    @Override
    public ResultadoServicio actualizarVentaDeposito(VentaDeposito ventaDeposito) throws ServiceException {
        ResultadoServicio resultadoServicio = new ResultadoServicio(ESTADO_RESULTADO.EXITOSO);
        try {
            daoVentaDeposito.actualizar(ventaDeposito);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
        return resultadoServicio;
    }

    @Override
    public List<VentaDeposito> obtenerVentaVentaDepositoBusqueda(Integer idBanco, String nrodepoito, Date fechadel, Date fechaal) throws ServiceException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public List<VentaDeposito> listarTodos() throws ServiceException {
        try {
            return new ArrayList<VentaDeposito>(daoVentaDeposito.listarTodos(VentaDeposito.class));
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }

    @Override
    public List<VentaDeposito> buscarPorFiltro(VentaDeposito ventaDeposito, Date fechaInicio, Date fechaFinal) throws ServiceException {
        try {
            return daoVentaDeposito.buscarPorFiltro(ventaDeposito, fechaInicio, fechaFinal);
        } catch (DAOException ex) {
            ex.printStackTrace();
            Logger.getLogger(ServicioVentaDepositoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
}
